package com.easystudy.media.service;

import com.easystudy.media.call.Callback;
import com.easystudy.media.error.ReturnValue;
import com.easystudy.media.model.DeviceInfo;
import com.easystudy.media.model.StrategyInfo;

/**
 * @文件名称: MeidaService.java
 * @功能描述: 媒体接入服务接口
 * @版权信息: www.easystudy.com
 * @技术交流: 961179337(QQ群)
 * @编写作者: lixx2048@163.com
 * @联系方式: 941415509(QQ)
 * @开发日期: 2023年11月20日
 * @历史版本: V1.0 
 * @备注信息:
 */
public interface MediaService {
	/**
	 * @功能描述: 注册客户端事件回调函数
	 * @版权信息: www.easystudy.com
	 * @编写作者: lixx2048@163.com
	 * @开发日期: 2021年5月31日
	 * @备注信息:
	 */
	void register(Callback callback);
	
	/**
	 * @功能描述: 获取客户端注册回调
	 * @版权信息: www.easystudy.com
	 * @编写作者: lixx2048@163.com
	 * @开发日期: 2021年5月31日
	 * @备注信息:
	 */
	Callback getCallback();
	
	/**
	 * @功能描述: 添加设备
	 * @版权信息: www.easystudy.com
	 * @编写作者: lixx2048@163.com
	 * @开发日期: 2023年11月20日
	 * @备注信息:
	 */
	ReturnValue<String> addDevice(DeviceInfo device);
	
	/**
	 * @功能描述: 设置设备录像策略
	 * @版权信息: www.easystudy.com
	 * @编写作者: lixx2048@163.com
	 * @开发日期: 2023年11月20日
	 * @备注信息: 
	 */
	ReturnValue<String> setStrategy(StrategyInfo strategy);
	
	/**
	 * @功能描述: 删除设备
	 * @版权信息: www.easystudy.com
	 * @编写作者: lixx2048@163.com
	 * @开发日期: 2023年11月20日
	 * @备注信息:
	 */
	ReturnValue<String> delDevice(String deviceId);
	
	/**
	 * @功能描述: 获取播放视频流
	 * @版权信息: www.easystudy.com
	 * @编写作者: lixx2048@163.com
	 * @开发日期: 2023年11月20日
	 * @备注信息: 
	 * channel：设备视频通道，从1开始，ipc为1
	 * stream:码流类型(0:主码流，1：子码流)
	 * @返回类型：错误码为0返回hls流地址
	 */
	ReturnValue<String> play(String deviceId, Integer channel, Integer stream);
	
	/**
	 * @功能描述: 停止播放视频流
	 * @版权信息: www.easystudy.com
	 * @编写作者: lixx2048@163.com
	 * @开发日期: 2023年11月20日
	 * @备注信息: 
	 * channel：设备视频通道，从1开始，ipc为1
	 * stream:码流类型(0:主码流，1：子码流)
	 * @返回类型：错误码为0返回hls流地址
	 */
	ReturnValue<String> stop(String deviceId, Integer channel, Integer stream);
}